Trida v balicku

Otázka od: Jiri Cincura

20. 10. 2004 13:12

Ahoj,
  je nejaka moznost, jak dostat tridu z balicku? Mam app. (buildnutou bez
balicku) a par svych trid (komponenty odvozene od Tcomponent). Potrebuju
tyto komponenty pouzivat v app. Je nejaka moznost, jak toto dostat z
balicku?

--
]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^[
] Jiri Cincura [
] e-mail: mailto:jiri@cincura.net; | http://www.cincura.net/ [
] mailto:xcincura@informatics.muni.cz | http://photo.cincura.net/ [
] ICQ: 314711544 | http://phorum.cincura.net/ [
] --- [
] And if our times are difficult and perplexing, [
] so are they challenging and filled with opportunity. [
] -Robert F. Kennedy, 1961 [
]--------------------------------------------------------------------------[



Odpovedá: Ondrej Kelle

20. 10. 2004 13:40

> je nejaka moznost, jak dostat tridu z balicku? Mam app.
> (buildnutou bez balicku) a par svych trid (komponenty
> odvozene od Tcomponent). Potrebuju tyto komponenty
> pouzivat v app. Je nejaka moznost, jak toto dostat z
> balicku?

To bude IMHO problem. Aplikacia, kedze je buildovana bez balickov, ma v sebe
prilinkovane vsetky (v nej pouzite) triedy VCL. Naproti tomu ten balicek
linkuje triedy z dalsich runtime balickov; napriklad TComponent z rtl70.bpl.
To znamena, ze po natiahnuti Tvojej .bpl do procesu .exe pouzivas duplicitne
triedy.

Napriklad TComponent z rtl70.bpl a TComponent z .exe - su to sice triedy s
identickym kodom, ale napriklad operatory is, as medzi nimi navzajom nebudu
fungovat. To moze viest k necakanym a neprehladnym chybam, v podstate je to
nepouzitelne.

Vo vseobecnosti plati, ze runtime balicky sa daju pouzivat iba v pripade, ak
je aplikacia buildovana s volbou "Build with runtime packages".

Teoreticky by mozno slo po natiahnuti balicka patchnut classinfo, VMT, RTTI
atd. tej triedy, aby dedila od prislusnych predkov v .exe, to vsak nebude
trivialna vec, napisat to spravne.

Podla mna mas dve rozumne moznosti:
- prebuildovat aplikaciu s runtime packages, alebo
- prilinkovat si tie triedy priamo do aplikacie.

HTH
TOndrej